﻿using System;
using System.Collections;

namespace Csharp队列
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 队列
            //储存的也是object类型

            Queue que = new Queue();//声明方式
            //释放的方式：先进先出
            //属性 count：该结构包含的元素个数
            //方法：
            //    EnQueue(Object value) 进入队列的末尾处
            //    DeQueue()返回并移除队列最前面的那个元素

            //Peek()把队列中队首的元素返回，但不删除

            for (int i = 0; i < 10; i++)
            {
                que.Enqueue(i);//进队
            }

            //记录数字---不能边修改，边访问
            int Static_count = que.Count;

            for (int i = 0; i < Static_count; i++)
            {
                Console.WriteLine(que.Dequeue());//出队
            }


            //队列---做什么---连招表

            //泛型
            //因为我们在编程中，想先不定义数据类型，只想先写逻辑，就可以使用object类型，这样我的逻辑就适用于所有类型
            //但是在运行中，object类型的变量需要转换到对应的类型，浪费资源，所以出现泛型，来替代object类型的方案

            //使用泛型，可以让我们延迟定义数据类型，来编写程序

            //泛型是一种逻辑应用到不同数据类型上的机制，可以通过类型替代符来暂时替代参数的数据类型

            //这样需要在编译的时候，编译器会自动将该替代符编译成对应数据类型来处理


            #region 泛型方法
            //方法定义 
            //      访问修饰 返回类型 方法名<T,U>(T参数U参数)
            //      {}

            //我们可以在方法名后使用<类型替代符>来定义一个泛型方法

            //定义泛型方法
            


            #endregion


            #endregion
        }
    }
}
